package com.sugar.real.estate.module.business.service.designplan;

import com.sugar.real.estate.framework.common.pojo.PageParam;
import com.sugar.real.estate.framework.common.pojo.PageResult;
import com.sugar.real.estate.module.business.controller.admin.designplan.vo.DesignPlanPageReqVO;
import com.sugar.real.estate.module.business.controller.admin.designplan.vo.DesignPlanSaveReqVO;
import com.sugar.real.estate.module.business.controller.admin.designplan.vo.DesignPlanSimpleRespVO;
import com.sugar.real.estate.module.business.controller.app.designplan.vo.AppDesignPlanDetailRespVO;
import com.sugar.real.estate.module.business.controller.app.designplan.vo.AppDesignPlanPageRespVO;
import com.sugar.real.estate.module.business.dal.dataobject.designplan.DesignPlanDO;

import javax.validation.Valid;
import java.util.List;

/**
 * 设计方案 Service 接口
 *
 * @author Ysugar
 */
public interface DesignPlanService {

    /**
     * 创建设计方案
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createDesignPlan(@Valid DesignPlanSaveReqVO createReqVO);

    /**
     * 更新设计方案
     *
     * @param updateReqVO 更新信息
     */
    void updateDesignPlan(@Valid DesignPlanSaveReqVO updateReqVO);

    /**
     * 删除设计方案
     *
     * @param id 编号
     */
    void deleteDesignPlan(Long id);

    /**
    * 批量删除设计方案
    *
    * @param ids 编号
    */
    void deleteDesignPlanListByIds(List<Long> ids);

    /**
     * 获得设计方案
     *
     * @param id 编号
     * @return 设计方案
     */
    DesignPlanDO getDesignPlan(Long id);

    /**
     * 获得设计方案分页
     *
     * @param pageReqVO 分页查询
     * @return 设计方案分页
     */
    PageResult<DesignPlanDO> getDesignPlanPage(DesignPlanPageReqVO pageReqVO);

    List<DesignPlanSimpleRespVO> getDesignPlanAll();

    PageResult<AppDesignPlanPageRespVO> appGetDesignPlanPage(PageParam reqVO);

    List<AppDesignPlanPageRespVO> getDesignPlanListByBuildHouseId(Long buildHouseId);

    AppDesignPlanDetailRespVO appGetDesignPlan(Long id);
}